package com.ruoyi.system.service;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 专家个人经费发放计算公式
 *
 * @author hututu
 */
public interface IJisuangongshiService {


//    /**
//     * 计算本批次应发津贴的对外接口
//     */
//    double jisuanbenpijintie(Zhuanjia zhuangjia, LocalDate zhuangtaibiangengshijian);

    /**
     * 专家无状态变化，则发放津贴金额 = （批次结束时间 - 专家在这次申报之前的最近一次发放时间 + 1） * 每月津贴；
     *
     * @param picStart 批次开始时间
     * @param piciEnd 批次结束时间
     * @param shangcifafangshijian 专家在这次申报之前的最近一次发放时间
     * @return 专家津贴总金额和补发金额
     */
    List<Double> zhengchangfafang(LocalDateTime picStart, LocalDateTime piciEnd, LocalDateTime shangcifafangshijian);
    /**
     * 专家最新状态变化是停发，且停发申报时间在专家中心制定拨款计划的前后
     * 1.停发申报时间在专家中心制定拨款计划之前，则发放津贴金额 = 停发批次的月金额 * （停发时间 - 专家在这次申报之前的最近一次发放时间 + 1）；
     * 2.停发申报时间在专家中心制定拨款计划之后，则发放津贴金额 = 0；
     *
     * @param picStart 批次开始时间
     * @param tingfashijian 专家停发时间
     * @param jiezhishijian 专家中心制定拨款计划时间
     * @param shangcifafangshijian 专家上次发放时间
     * @return 专家津贴总金额和补发金额
     */
    List<Double> tingfafafang(LocalDateTime picStart, LocalDateTime tingfashijian, LocalDateTime jiezhishijian, LocalDateTime shangcifafangshijian);

    /**
     * 专家最新状态变化是补发，且补发时间在专家中心制定拨款计划之前后
     * 1.补发时间在专家中心制定拨款计划之前，则发放津贴金额 = （批次结束时间 - 专家在这次申报之前的最近一次发放时间 + 1） * 每月津贴；
     * 2.补发时间在专家中心制定拨款计划之后，则发放津贴金额 = 0；
     *
     * @param biangengshij 专家状态变更时间
     * @param picStart 批次开始时间
     * @param piciEnd 批次结束时间
     * @param shangcifafangshijian 专家在这次申报之前的最近一次发放时间
     * @param jiezhishijian 专家中心制定拨款计划时间
     * @return      * @return 专家津贴总金额和补发金额
     */
    List<Double> bufafafang(LocalDateTime biangengshij, LocalDateTime picStart, LocalDateTime piciEnd, LocalDateTime jiezhishijian, LocalDateTime shangcifafangshijian);

//    /**
//     * 转入时间在专家中心制定拨款计划之前，则分专家状态在复联时间之后，在专家中心制定拨款计划之前是否在本批次有其他变化
//     * 1.有变化，则发放津贴金额
//     */
}
